package com.zjc.agent.ai.tools;

import com.zjc.agent.ai.domain.dto.AiOrderDto;
import com.zjc.agent.ai.utils.HttpUtil;
import com.zjc.agent.ai.utils.TokenContextHolder;
import dev.langchain4j.agent.tool.P;
import dev.langchain4j.agent.tool.Tool;
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class OrderTool {
//    /**
//     * 获取乘客信息
//     *
//     * @return
//     */
//    @Tool(name = "passengerInfoSearch", value = """
//            查询用户关联的乘机人信息。
//            当用户订票时需要查询乘机人详情时使用此工具。
//            姓名以lastName+firstName拼接。
//            结果请以表格形式输出。
//            """)
//    public String searchPassengerInfo() {
//        // 获取用户token
//        String token = TokenContextHolder.getToken();
//        log.info("获取用户乘机人信息{}", token);
//        return HttpUtil.get("/system/info/list", token);
//    }

    /**
     * 新增订单
     *
     * @return
     */
    @Tool(name = "addOrder", value = """
            新增订单。
            当用户填写好乘机人需要创建订单时调用，该工具会返回订单id。
            """)
    public String addOrder(
            @P(value = "乘机人id,按','分割") String userIds,
            @P(value = "联系人姓名") String contactName,
            @P(value = "联系人电话") String contactPhone,
            @P(value = "联系人邮箱，可不填") String contactEmail,
            @P(value = "航班uuid") String flightId,
            @P(value = "舱位等级(大写字母)") String cabinClass
    ) {
        AiOrderDto orderDto = new AiOrderDto();
        orderDto.setUserIds(userIds);
        orderDto.setContactName(contactName);
        orderDto.setContactPhone(contactPhone);
        orderDto.setContactEmail(contactEmail);
        orderDto.setFlightId(flightId);
        orderDto.setCabinClass(cabinClass);
        log.info("新增订单{}", orderDto);
        return HttpUtil.post("/flight/ai/add", orderDto, TokenContextHolder.getToken());
    }

    /**
     * 根据id查询订单
     */
    @Tool(name = "getOrderById", value = """
            根据id查询订单。
            """)
    public String getOrderById(@P(value = "订单id") String id) {
        log.info("查询订单{}", id);
        return HttpUtil.get("/flight/" + id, TokenContextHolder.getToken());
    }
}
